package com.jry.gen.mapper;

import com.jry.gen.domain.GenTableColumn;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 业务字段 数据层
 *
 * @author zhangsuhang
 */
public interface GenTableColumnMapper {

  /**
   * 根据表名称查询列信息
   *
   * @param tableName 表名称
   * @return 列信息
   */
  public List<GenTableColumn> selectDbTableColumnsByName(String tableName);

  /**
   * 查询业务字段列表
   *
   * @param tableId 业务字段编号
   * @return 业务字段集合
   */
  public List<GenTableColumn> selectGenTableColumnListByTableId(Long tableId);

  /**
   * 新增业务字段
   *
   * @param genTableColumn 业务字段信息
   * @return 结果
   */
  public int insertGenTableColumn(GenTableColumn genTableColumn);

  /**
   * 批量新增业务字段
   *
   * @param genTableColumnList 业务字段信息
   * @return 结果
   */
  @Insert({
          "<script>",
          "insert into gen_table_column(table_id, column_name, column_comment, column_type, java_type, java_field, is_pk, ",
                  "is_increment, is_required, is_insert, is_edit, is_list, is_query, query_type, html_type, ",
                  "dict_type, sort, create_by, create_time) values ",
          "<foreach collection='genTableColumnList' item='item' index='index' separator=','>",
          "(#{item.tableId}, #{item.columnName}, #{item.columnComment}, #{item.columnType}, #{item.javaType}, #{item.javaField}, ",
                  "#{item.isPk}, #{item.isIncrement}, #{item.isRequired}, #{item.isInsert}, #{item.isEdit}, ",
                  "#{item.isList}, #{item.isQuery}, #{item.queryType}, #{item.htmlType}, #{item.dictType}, ",
                  "#{item.sort}, #{item.createBy}, sysdate())",
          "</foreach>",
          "</script>"
  })
  int insertGenTableColumnList(@Param(value = "genTableColumnList")List<GenTableColumn> genTableColumnList);

  /**
   * 修改业务字段
   *
   * @param genTableColumn 业务字段信息
   * @return 结果
   */
  public int updateGenTableColumn(GenTableColumn genTableColumn);

  /**
   * 删除业务字段
   *
   * @param genTableColumns 列数据
   * @return 结果
   */
  public int deleteGenTableColumns(List<GenTableColumn> genTableColumns);

  /**
   * 批量删除业务字段
   *
   * @param ids 需要删除的数据ID
   * @return 结果
   */
  public int deleteGenTableColumnByIds(Long[] ids);
}
